package algos;

/**
 * An action represents the different choice that the algorithm can choose to
 * apply on the current context.
 */
public interface Action<T> {
	
	/**
	 * Apply the action on a context and create a new layer in the context
	 * stack.
	 * @param context the context where the action must be applied
	 * @return a new context layer
	 */
	public T applyOn(ContextStack<T> context);
	
}
